home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 005 / budget.arc / BUDGET.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1985-06-26  |  7.6 KB  |  219 lines

  1. 100  REM TYPED BY CONNIE FOSTER ,CORRECTED BY C.FOSTER ,PROG BY O.E.DIAL
  2. 110  REM ALL REM STATEMENTS CAN BE CHANGED TO ALLOW USE OF TWO TERMINALS
  3. 120  REM SEE ARTICLE IN PERSONAL COMPUTING MAY/JUNE 77
  4. 130  Q=27:V$="###.#":W$="$$#####,":U$="###"
  5. 140  DIM D(18),E$(Q),V(Q),F(Q)
  6. 141  CLS:KEY OFF
  7. 150  PRINT TAB(19)"RECURSIVE BUDGETING MODEL":PRINT:PRINT TAB(28)"* * *"
  8. 151  PRINT:PRINT "If you want a hardcopy, use ALT-PrtSc."
  9. 160  DATA SALARY/WAGES,OTHER INCOME,FED INC TAX,STATE & LOCAL TAX
  10. 170  DATA SOCIAL SECURITY,UNEMPLOYMENT INS,HEALTH INS
  11. 180  DATA LIFE INS,CONTRIBUTIONS,OTHER DEDUCTIONS
  12. 190  DATA RENT/MORTGAGE,LIFE INS,HEALTH INS,HOUSE INS
  13. 200  DATA AUTO INS,CAR PAYMENTS,LOAN PAYMENTS,TRASH REMOVAL
  14. 210  DATA OTHER FIXED EXP
  15. 220  DATA FOOD/BEVERAGES,CLOTHING,DRY CLEANING,BARBER/BEAUTY
  16. 230  DATA HOME MAINT,HOME HEAT'G FUEL,WATER,ELECTRICITY, TELEPHONE
  17. 240  DATA GAS/OIL,AUTO MAINT,FARES/TOLLS/PARKING,DENTIST
  18. 250  DATA PHYSICIAN,DRUGS/SUNDRIES,SCHOOL EXPENSE,FAMILY ALLOWANCE
  19. 260  DATA CLUBS/LODGES,THEATER/SPORTS,RESTAURANTS
  20. 270  DATA OTHER ENT'MENT,MAG'S/BOOKS/PAPERS,SITTERS,CHILD CARE
  21. 280  DATA VACATION SAVING,OTHER SAVINGS,CONTRIBUTIONS,OTHER EXPENSES
  22. 290  PRINT:PRINT"SELECT YOUR BUDGETING PERIOD BY NUMBER. LATER ON IT WILL"
  23. 300  PRINT"BE EXTENDED TO ONE YEAR.":PRINT
  24. 310  PRINT TAB(3)"1-WEEKLY"TAB(15)"2-BIWEEKLY"TAB(30)"3-SEMIMONTHLY";
  25. 320  PRINT TAB(45)"4-MONTHLY":PRINT
  26. 330  INPUT P:IF P>4 THEN PRINT"TRY AGAIN":GOTO 290
  27. 340  IF P=1 THEN P=52 ELSE IF P=2 THEN P=26 ELSE IF P=3 THEN P=24 ELSE IF P=4 THEN P=12
  28. 350  PRINT:PRINT"ALRIGHT,FIRST LET'S LOOK AT INCOME FOR THE PERIOD.":PRINT
  29. 360  READ A$:PRINT A$;" $";:INPUT D(0):READ A$:PRINT A$;" $";:INPUT D(1)
  30. 370  TI=D(0)+D(1):PRINT
  31. 380  PRINT:PRINT"OK,NOW LET'S LOOK AT PAYCHECK DEDUCTIONS.":PRINT
  32. 390  FOR J=2 TO 9:READ A$:PRINT A$;:INPUT" $";D(J):TD=TD+D(J):NEXT J:PRINT
  33. 400  PRINT"OK,NOW LET'S LOOK AT FIXED EXPENSES.":PRINT
  34. 410  FOR J=10 TO 18:READ A$:PRINT A$;:INPUT" $";D(J):TF=TF+D(J):NEXT J
  35. 420  DF=TD+TF:SI=TI-DF:S=64
  36. 430  PRINT:PRINT"OK,AT THIS TIME OUR TABLE LOOKS LIKE THIS:":PRINT
  37. 440  REM
  38. 450  GOSUB 1900:PRINT:PRINT TAB(19);
  39. 460  PRINT"RECURSIVE BUDGETING MODEL":PRINT:PRINT TAB(27)"* * *":PRINT
  40. 470  GOSUB 1900
  41. 480  PRINT:PRINT TAB(20)"SPENDABLE INCOME SUMMARY":PRINT
  42. 490  GOSUB 1890:PRINT TAB(3)"ACCOUNT"TAB(42)"PERIOD"TAB(57)"ANNUAL"
  43. 500  GOSUB 1890:PRINT"TOTAL INCOME" TAB(40);:PRINT USING W$;TI;:PRINT TAB(55)
  44. 510  PRINT USING W$;TI*P:PRINT:PRINT TAB(3)"PAYCHECK DEDUCTIONS"TAB(25);
  45. 520  PRINT USING W$;TD*(-1):PRINT
  46. 530  PRINT TAB(3)"FIXED EXPENSES"TAB(25);:PRINT USING W$;TF*(-1);
  47. 540  PRINT TAB(40);:PRINT USING W$;DF*(-1);:PRINT TAB(55);
  48. 550  PRINT USING W$;DF*(-1)*P
  49. 560  PRINT TAB(41)"-------"TAB(55)"--------":PRINT"SPENDABLE INCOME";
  50. 570  PRINT TAB(40);:PRINT USING W$;SI;:PRINT TAB(55);:PRINT USING W$;SI*P
  51. 580  PRINT TAB(41)"======="TAB(55)"========":PRINT:
  52. 590  GOSUB 1900:PRINT: PRINT
  53. 600  REM
  54. 610  GOSUB 1910:RO=0
  55. 620  PRINT:PRINT "OK,NOW FOR THE FIRST ROUND OF VARIABLE EXPENSE. DON'T"
  56. 630  PRINT"PINCH YOURSELF IN YOUR ESTIMATES (WITHIN REASON). LET THE"
  57. 640  PRINT"COMPUTER HELP YOU REFINE YOUR BUDGET LATER ON.":PRINT
  58. 650  FOR J=0 TO Q:READ E$(J) :PRINT E$(J);:INPUT" $";V(J):VT=VT+V(J):NEXT J
  59. 660  RESTORE:PRINT:PRINT
  60. 670  PRINT"YOUR BUDGET FOR THE FIRST ROUND TOTALLED $"VT". THIS"
  61. 680  PRINT"COMPARES TO SPENDABLE INCOME OF $"SI". WE HAVE"
  62. 690  PRINT"PRORATED THE DIFFERENCE, $"SI-VT",OVER ALL VARIABLE EXPENSE"
  63. 700  PRINT"ACCOUNTS.":PRINT
  64. 710  GOSUB 1910:FOR J=0 TO Q:V(J)=INT(V(J)/VT*SI):NEXT J:VT=SI:PRINT
  65. 720  PRINT"NOW WE BEGIN THE BUDGET REFINEMENT PHASE. MAKE AS MANY"
  66. 730  PRINT"PASSES AS YOU LIKE. AS YOU REVIEW EACH ACCOUNT,DECIDE"
  67. 740  PRINT"WHETHER TO FREEZE IT OR TO LEAVE IT FOR ANOTHER PASS.":PRINT
  68. 750  PRINT"HINT: DON'T BE IN A HURRY TO FREEZE AN ACCOUNT.":PRINT
  69. 760  PRINT"YOUR TASK IS FINISHED WHEN ALL ACCOUNTS ARE FROZEN.":PRINT
  70. 770  GOSUB 1910
  71. 780  FOR J=0 TO Q:PRINT:IF V(J)=0 THEN 980
  72. 790  PRINT E$(J);" $";V(J):INPUT"CHANGE ('Y' OR 'N')";A$
  73. 800  IF A$="N" THEN 840 ELSE IF A$="Y" THEN 820 ELSE IF A$<>"Y" THEN 790
  74. 810  GOTO 790
  75. 820  INPUT"REVISED AMOUNT $";A:IF A<V(J) THEN 840
  76. 830  GOSUB 1930
  77. 840  INPUT"FREEZE ('Y' OR 'N')";B$:PRINT
  78. 850  IF A$="Y" AND B$="Y" THEN 900
  79. 860  IF A$="Y" AND B$="N" THEN 940
  80. 870  IF A$="N" AND B$="N" THEN 980
  81. 880  VT=VT-V(J):FT=FT+V(J):SWAP F(J),V(J):V(J)=0:PRINT
  82. 890  PRINT"OK,THE ACCOUNT HAS BEEN FROZEN AT $"F(J)".":GOTO 980
  83. 900  VT=VT-A:FT=FT+A:SWAP A,F(J):V(J)=0
  84. 910  FOR K=O TO Q:V(K)=INT(V(K)*(SI-FT)/VT):NEXT K:VT=SI-FT
  85. 920  PRINT"OK,THE ACCOUNT HAS BEEN FROZEN AT $"F(J)",AND THE DIFFERENCE"
  86. 930  PRINT"PRORATED OVER REMAINING ACCOUNTS.":PRINT:GOTO 980
  87. 940  VT=VT-V(J)+A:V(J)=A
  88. 950  FOR K=0 TO Q:V(K)=INT(V(K)*(SI-FT)/VT):NEXT K:VT=SI-FT
  89. 960  PRINT"OK,THE VALUE HAS BEEN CHANGED TO $"A", AND THE DIFFERENCE"
  90. 970  PRINT"PRORATED OVER REMAINING ACCOUNTS.":PRINT
  91. 980  NEXT J:PRINT:R=0:FOR J=0 TO Q:IF V(J)=0 THEN R=R+1:NEXT J
  92. 990  IF R<=Q THEN 1010
  93. 1000  FOR J=O TO Q:F(J)=INT(F(J)/FT*SI):VT=0:FT=SI:GOTO 1380
  94. 1010  PRINT"NOW LET'S RECAP VARIABLE EXPENSES BEFORE GOING ON TO THE"
  95. 1020  PRINT"NEXT ROUND.":PRINT:RO=RO+1:V1=0:F1=0
  96. 1030  FOR J=0 TO Q:V(J)=INT(V(J)/VT*(SI-FT)):NEXT J:VT=SI-FT
  97. 1040  REM
  98. 1050  PRINT TAB(7)"INTERIM SUMMARY OF VARIABLE EXPENSES";
  99. 1060  PRINT":   NO."RO
  100. 1070  GOSUB 1890:PRINT TAB(3)"ACCOUNTS"TAB(28)"NUMBER"TAB(37)"PERCENT";
  101. 1080  PRINT TAB(48)"AMOUNT"TAB(56)"PERCENT"
  102. 1090  GOSUB 1890:FOR J=0 TO Q:IF V(J)+F(J)=0 THEN 1110
  103. 1100  IF V(J) THEN V1=V1+1 ELSE F1=F1+1
  104. 1110  NEXT J
  105. 1120  PRINT"VARIABLE EXPENSES"TAB(29);:PRINT USING U$;V1;:PRINT TAB(39);
  106. 1130  PRINT USING V$;V1/(V1+F1)*100;:PRINT TAB(46);:PRINT USINGW$;VT;
  107. 1140  PRINT TAB(58);:PRINT USING V$;VT/TI*100:PRINT
  108. 1150  PRINT"FROZEN EXPENSES"TAB(29);:PRINT USINGU$;F1;:PRINT TAB(39);
  109. 1160  PRINT USING V$;F1/(V1+F1)*100;:PRINT TAB(46);
  110. 1170  PRINT USING W$;FT;:PRINT TAB(58);:PRINT USING V$;FT/TI*100
  111. 1180  PRINT TAB(28)"-------"TAB(48)"--------"
  112. 1190  PRINT TAB(3)"TOTALS"TAB(29);:PRINT USING U$;F1+V1;:PRINT TAB(46);
  113. 1200  PRINT USING W$;VT+FT:PRINT TAB(28)"======="TAB(48)"========":PRINT
  114. 1210  GOSUB 1900:PRINT:PRINT
  115. 1220  GOSUB 1230:GOTO 1270
  116. 1230  PRINT TAB(8)"INTERIM STATUS OF VARIABLE EXPENSES  NO."RO
  117. 1240  GOSUB 1890:PRINT TAB(3)"ACCOUNT"TAB(30)"VARIABLE"TAB(43)"FROZEN";
  118. 1250  PRINT TAB(54)"PERCENT"
  119. 1260  GOSUB 1890:PRINT
  120. 1270  FOR J=0 TO Q:IF V(J)+F(J)=0 THEN 1330 ELSE PRINT E$(J);:R2=R2+1
  121. 1280  IF F(J) THEN 1300 ELSE PRINT TAB(29):PRINT USING W$;V(J);:PRINT TAB(55);
  122. 1290  PRINT USING V$;V(J)/TI*100:GOTO 1320
  123. 1300  PRINT TAB(40);:PRINT USING W$;F(J);:PRINT TAB(55);
  124. 1310  PRINT USING V$;F(J)/TI*100
  125. 1320  IF INT(R2/5)=R2/5 THEN PRINT
  126. 1330  NEXT J:PRINT:R2=0
  127. 1340  GOSUB 1900:PRINT
  128. 1350  REM
  129. 1360  PRINT:PRINT "NOW WE MAKE ANOTHER PASS THROUGH VARIABLE EXPENSES.":PRINT
  130. 1370  GOTO 770
  131. 1380  PRINT"PLEASE INPUT THE REQUESTED INFORMATION BEFORE WE PROVIDE A"
  132. 1390  PRINT"FINAL DETAIL OF YOUR BUDGET.":PRINT
  133. 1400  PRINT TAB(18)"* USE NO COMMAS NOR COLONS *":PRINT
  134. 1410  INPUT"NAME";A$:INPUT"BUDGET YEAR";A
  135. 1420  B=LEN(A$):B=16-B/2
  136. 1430  REM
  137. 1440  GOSUB 1920
  138. 1450  GOSUB 1900:PRINT
  139. 1460  PRINT TAB(B)"* THE "A$" FAMILY BUDGET FOR"A"*":PRINT
  140. 1470  GOSUB 1900:PRINT
  141. 1480  PRINT TAB(6)"ACCOUNT"TAB(20)""TAB(26)"INCOME"TAB(38)":";
  142. 1490  PRINT TAB(44)"EXPENSE"TAB(56)":PERCENT"
  143. 1500  PRINT TAB(20)":-----------------:-----------------: TOTAL"
  144. 1510  PRINT TAB(20)": PERIOD : ANNUAL : PERIOD : ANNUAL : INCOME"
  145. 1520  PRINT"--------------------:--------:--------:--------:--------:------"
  146. 1530  X$=":$$#####,:$$#####,:        :        : ###.#"
  147. 1540  Y$=":        :        :$$#####,:$$#####,: ###.#"
  148. 1550  GOTO 1570
  149. 1560  PRINT":        :        :        :        :":RETURN
  150. 1570  PRINT"INCOME"TAB(20);:PRINT USING X$;TI;TI*P;TI/TI*100
  151. 1580  PRINT"------"TAB(20);
  152. 1590  GOSUB 1560
  153. 1600  READ A$:PRINT A$ TAB(20);:PRINT USING X$;D(0);D(0)*P;D(0)/TI*100
  154. 1610  READ A$:PRINT A$ TAB(20);:PRINT USING X$;D(1);D(1)*P;D(1)/TI*100
  155. 1620  PRINT TAB(20);
  156. 1630  GOSUB 1560
  157. 1640  PRINT"PAYCHECK DEDUCT'S"TAB(20);
  158. 1650  PRINT USING Y$;TD;TD*P;TD/TI*100
  159. 1660  PRINT"-----------------"TAB(20);
  160. 1670  GOSUB 1560
  161. 1680  FOR J=2 TO 9:READ A$:IF D(J)=0 THEN 1700 ELSE PRINT A$ TAB(20);
  162. 1690  PRINT USING Y$;D(J);D(J)*P;D(J)/TI*100
  163. 1700  NEXT J:PRINT TAB(20);
  164. 1710  GOSUB 1560
  165. 1720  PRINT"FIXED EXPENSES"TAB(20);
  166. 1730  PRINT USING Y$;TF;TF*P;TF/TI*100
  167. 1740  PRINT"--------------"TAB(20);
  168. 1750  GOSUB 1560
  169. 1760  FOR J=10 TO 18:READ A$:IF D(J)=0 THEN 1780 ELSE PRINT A$ TAB(20);
  170. 1770  PRINT USING Y$;D(J);D(J)*P;D(J)/TI*100
  171. 1780  NEXT J:PRINT TAB(20);
  172. 1790  GOSUB 1560
  173. 1800  PRINT"VARIABLE EXPENSE"TAB(20);
  174. 1810  PRINT USING Y$;FT;FT*P;FT/TI*100
  175. 1820  PRINT"----------------"TAB(20);
  176. 1830  GOSUB 1560
  177. 1840  FOR J=0 TO Q:IF F(J)=0 THEN 1860 ELSE PRINT E$(J) TAB(20);
  178. 1850  PRINT USING Y$;F(J);F(J)*P;F(J)/TI*100
  179. 1860  NEXT J:PRINT
  180. 1870  GOSUB 1900:PRINT
  181. 1880  GOSUB 1900:PRINT:GOTO 1980
  182. 1890  FOR L=1 TO S:PRINT"-";:NEXT L:PRINT:RETURN
  183. 1900  FOR L=1 TO S:PRINT"=";:NEXT L:PRINT:RETURN
  184. 1910  PRINT"PRESS 'Y' TO CONTINUE":PRINT:INPUT A$:PRINT:RETURN
  185. 1920  FOR L=1 TO 10:PRINT;:NEXT L:RETURN
  186. 1930  IF A<=V(J) THEN 1970
  187. 1940  IF A<=VT THEN 1970
  188. 1950  PRINT"* YOU HAVE EXCEEDED YOUR BALANCE OF SPENDABLE INCOME BY $"A-SI;
  189. 1960  PRINT" *":INPUT"REVISED AMOUNT $";A:PRINT
  190. 1970  RETURN
  191. 1980  RESTORE:READ A$:READ A$:PRINT:PRINT:S=95
  192. 1990  PRINT TAB(21)"* EXPENSE BAR CHART *"
  193. 2000  PRINT TAB(20)"PERCENT OF TATAL INCOME":PRINT
  194. 2010  GOSUB 1890:PRINT
  195. 2020  GOSUB 2140:PRINT
  196. 2030  FOR J=2 TO 18:READ A$:IF D(J)=0 THEN 2060
  197. 2040  A=INT(D(J)/TI*300):PRINT A$;
  198. 2050  GOSUB 2170
  199. 2060  NEXT J
  200. 2070  FOR J=0 TO Q:IF F(J)=0 THEN 2100
  201. 2080  A=INT(F(J)/TI*300):PRINT E$(J);
  202. 2090  GOSUB 2170
  203. 2100  NEXT J:PRINT
  204. 2110  GOSUB 2140:PRINT:PRINT
  205. 2120  GOSUB 1900:PRINT:PRINT:STOP
  206. 2130  REM
  207. 2140  PRINT TAB(20)"  -  -  -  -  5  -  -  -  - 10  -  -  -  - 15  -  -  -  ";
  208. 2150  PRINT"- 20  -  -  -  - 25":RETURN
  209. 2160  RETURN
  210. 2170  IF A<1 THEN PRINT TAB(20)"]":GOTO 2200
  211. 2180  IF A<2 THEN PRINT TAB(20)"]]":GOTO 2200
  212. 2190  PRINT TAB(20);:FOR K=1 TO A:PRINT"]";:NEXT K:PRINT
  213. 2200  RETURN
  214. 2210  REM
  215. 2220  REM
  216. 2230  STOP
  217. 2240  REM
  218. 2250  REM
  219.